package ask

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

type errorCode struct {
	SUCCESS      int
	ERROR        int
	NotFound     int
	LoginError   int
	LoginTimeout int
	InActive     int
}

// ErrorCode 错误码
var ErrorCode = errorCode{
	SUCCESS:      0,
	ERROR:        1,
	NotFound:     404,
	LoginError:   1000, //用户名或密码错误
	LoginTimeout: 1001, //登录超时
	InActive:     1002, //未激活账号
}

// 统一接口约束  backend/shared/kernel/echo/response.go
type Response struct {
	Code    int         `json:"code"`
	Data    interface{} `json:"data"`
	Message string      `json:"message"`
}

// httpCode 200 自定义code 1  永远成功
func Success(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, Response{Code: ErrorCode.ERROR, Data: data, Message: "success"})
}

// 失败 暂定 ： （后续增加）
// StatusFound-302: 重定向
// StatusInternalServerError-500: 系统错误
// StatusBadRequest-400 : 请求错误
func Errors(c *gin.Context, statusCode int, err error) {
	//if stausCode == 500 {
	//	logger.Error(err.Error())
	//	kernel.ErrChan <- *kernel.ErrSystem(fmt.Sprintf("系统内部错误:%v", err.Error()))
	//}
	c.JSON(http.StatusOK, Response{Code: statusCode, Message: err.Error()})
}

// 自定义 httpCode statusCode
// htypCode 200成功  statusCode -1 失败
func NewErrors(c *gin.Context, httpCode int, statusCode int, err error) {
	code := 200 //默认200
	if httpCode != 200 {
		code = httpCode
	}
	c.JSON(code, Response{Code: statusCode, Message: err.Error()})
}
